home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Nordlicht Spiele
/
Nordlicht Spiele 02-06 (19xx)(Nordlicht)(DE)(PD).zip
/
Nordlicht Spiele 02-06 (19xx)(Nordlicht)(DE)(PD).adf
/
fruit_machine.AMOS
/
fruit_machine.amosSourceCode
Wrap
AMOS Source Code
|
1990-08-11
|
14KB
|
473 lines
Dim REELS(5,22),RVALUE(5,22),BUTTON(18,4),W(5),HOLD(5),WIN(7,5),NVALUE(5,22)
Global REELS(),BUTTON(),RVALUE(),WIN(),NVALUE()
Screen Open 1,320,256,16,Lowres : Cls 0
Screen Open 0,320,256,16,Lowres : Cls 0
Flash Off
Load Iff "df0:newfruitfront",1
Auto View Off
Load Iff "df0:newfruitbuttons",0
Load "df0:newreelpics1.ABK"
Load "df0:samples2.abk"
Screen 1
Reserve Zone 18
Proc SETUP
Get Disc Fonts
Set Font 1
Screen To Front 1 : Auto View On : Double Buffer : Autoback 1
Volume 30 : Pen 15
A$="For R0=1 To 17 ; Let A=R0 ; Next R0 ; P ; P ; P ; P ; "
B$=A$+"Let A=RB" : C$=A$+"Let A=RC" : A$=A$+"Let A=RA"
D$="For R1=1 To 2 ; For R0=1 To 17 ; Let A=R0 ; Next R0 ; Next R1 ; P ; P ; P ; P ; "
E$=D$+"Let A=RE" : F$=D$+"Let A=RF" : D$=D$+"Let A=RD"
G$="For R1=1 To 3 ; For R0=1 To 17 ; Let A=R0 ; Next R0 ; Next R1 ; P ; P ; P ; P ; "
H$=G$+"Let A=RH" : I$=G$+"Let A=RI" : G$=G$+"Let A=RG"
J$="For R1=1 To 4 ; For R0=1 To 17 ; Let A=R0 ; Next R0 ; Next R1 ; P ; P ; P ; P ; "
K$=J$+"Let A=RK" : L$=J$+"Let A=RL" : J$=J$+"Let A=RJ"
M$="For R1=1 To 5 ; For R0=1 To 17 ; Let A=R0 ; Next R0 ; Next R1 ; P ; P ; P ; P ; "
N$=M$+"Let A=RN" : O$=M$+"Let A=RO" : M$=M$+"Let A=RM"
FRESHGAME:
POUNDS=2 : NPENCE=0 : W=0 : HOLD=0 : PX2=166 : PX1=8 : FIRST=0
NCOUNT=0 : NH=0
Proc MONEYTEXT
MAIN:
If POUNDS+NPENCE=0 Then Proc LOSER : Goto FRESHGAME
LIGHT=1 : Proc LIGHTSTART : SFC=150
HOLD=0 : R=Rnd(5)
If R=5 and FIRST=1 Then HOLD=1 : LIGHT=1 : Proc LIGHTFIVEHOLD
If R<5 Then HOLD=0 : LIGHT=0 : Proc LIGHTFIVEHOLD
SPINREELS:
Clear Key
Repeat
MC=Mouse Click
IK$=Inkey$
If IK$<>"" Then Proc GAMELOADSAVE
M=Mouse Zone
Dec SFC
If SFC=0 Then If LIGHT=1 Then LIGHT=0 : Proc LIGHTSTART : SFC=150
If SFC=0 Then If LIGHT=0 Then LIGHT=1 : Proc LIGHTSTART : SFC=150
Until MC>0 and M>0
If M>9 or M=2 or M=3 Then Goto SPINREELS
If HOLD=0 and M>3 and M<9 Then Goto SPINREELS
If M>3 and HOLD=1 Then Proc LIGHTHOLDOFF : Goto SPINREELS
If M=1 Then Proc SPIN
Wait 100
WINORLOSE:
Q=Rnd(500) : If Q=250 Then Proc SUPERNUDGE : FIRST=0 : Goto MAIN
Proc WINCHECK
Proc MONEYTEXT
Proc NUDGECHECK
Goto MAIN
End
Procedure SETUP
Limit Mouse 120,50 To 430,300
Reserve Zone 18
Ink 15,0
For N=1 To 5
For M=0 To 21
Read REELS(N,M)
Next M
Next N
For N=1 To 5
For M=0 To 21
Read RVALUE(N,M)
Next M
Next N
For N=1 To 5
For M=0 To 21
Read NVALUE(N,M)
Next M
Next N
For N=1 To 18
Read BUTTON(N,1) : Read BUTTON(N,2) : Read BUTTON(N,3) : Read BUTTON(N,4)
Set Zone N,BUTTON(N,1),BUTTON(N,2) To BUTTON(N,3),BUTTON(N,4)
Next N
For N=1 To 7
For M=2 To 5
Read WIN(N,M)
Next M
Next N
Channel 1 To Bob 1 : Bob 1,8,88,4
Channel 2 To Bob 2 : Bob 2,8,120,17
Channel 3 To Bob 3 : Bob 3,8,152,6
Channel 4 To Bob 4 : Bob 4,57,88,1
Channel 5 To Bob 5 : Bob 5,57,120,11
Channel 6 To Bob 6 : Bob 6,57,152,8
Channel 7 To Bob 7 : Bob 7,106,88,7
Channel 8 To Bob 8 : Bob 8,106,120,2
Channel 9 To Bob 9 : Bob 9,106,152,8
Channel 10 To Bob 10 : Bob 10,155,88,1
Channel 11 To Bob 11 : Bob 11,155,120,16
Channel 12 To Bob 12 : Bob 12,155,152,11
Channel 13 To Bob 13 : Bob 13,204,88,1
Channel 14 To Bob 14 : Bob 14,204,120,12
Channel 15 To Bob 15 : Bob 15,204,152,3
Rem reel data *********************************************************
Data 5,4,17,6,14,3,16,15,5,1,16,13,17,1,2,8,6,7,10,9,5,4
Data 5,1,8,11,14,8,16,1,5,1,16,11,8,1,14,8,11,5,1,9,5,1
Data 11,7,2,8,15,3,1,5,10,16,13,17,9,8,15,6,5,16,4,2,11,7
Data 11,5,14,8,1,8,1,5,1,16,11,8,9,8,1,11,5,16,1,14,11,5
Data 11,1,12,3,16,9,5,2,4,6,16,15,14,13,16,17,15,7,2,17,11,1
Rem reel value data ***************************************************
Data 5,1,2,4,3,2,6,1,5,1,6,4,2,1,3,2,4,5,1,7,5,1
Data 5,1,2,4,3,2,6,1,5,1,6,4,2,1,3,2,4,5,1,7,5,1
Data 4,5,3,2,1,2,1,5,1,6,4,2,7,2,1,4,5,6,1,3,4,5
Data 4,5,3,2,1,2,1,5,1,6,4,2,7,2,1,4,5,6,1,3,4,5
Data 4,1,5,2,6,7,5,3,1,4,6,1,3,4,6,2,1,5,3,2,4,1
Rem nudge value data **************************************************
Data 1,3,1,2,0,3,0,1,1,0,0,3,1,0,2,0,2,3,2,0,1,3
Data 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0
Data 0,3,2,0,1,3,0,1,2,0,3,1,0,0,1,2,1,0,3,2,0,3
Data 0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1
Data 0,0,2,3,0,0,1,2,3,2,0,1,0,3,0,1,1,3,2,1,0,0
Rem zone data *********************************************************
Data 265,227,306,253,265,195,306,221,265,163,306,189,7,227,48,253
Data 56,227,97,253,105,227,146,253,154,227,195,253,203,227,244,253
Data 7,195,48,221,56,195,97,221,105,195,146,221,154,195,195,221
Data 203,195,244,221,7,50,48,76,56,50,97,76,105,50,146,76
Data 154,50,195,76,203,50,244,76
Rem win money data ****************************************************
Data 20,30,50,70,20,30,50,80,20,30,50,90,20,30,50,100,20,30,50,100
Data 20,30,50,100,20,300,1000,5000
End Proc
Procedure SPIN
Shared W(),A$,B$,C$,D$,E$,F$,G$,H$,I$,J$,K$,L$,M$,N$,O$
Shared LIGHT,FIRST,HOLD(),REELS(),HOLD,NPENCE
Rem *********************************************************
FIRST=1 : LIGHT=0 : Proc LIGHTSTART
NPENCE=NPENCE-10 : Proc MONEYTEXT
Z=1 : For N=1 To 5
R=Rnd(19)+1
If HOLD(N)=0
Amreg(Z)=REELS(N,R) : Amreg(Z-1)=REELS(N,R-1) : Amreg(Z+1)=REELS(N,R+1)
W(N)=R
End If
Z=Z+3
Next N
Sam Play %1111,3,20000
If HOLD(1)=0 Then Amal 1,A$ : Amal 2,B$ : Amal 3,C$
If HOLD(2)=0 Then Amal 4,D$ : Amal 5,E$ : Amal 6,F$
If HOLD(3)=0 Then Amal 7,G$ : Amal 8,H$ : Amal 9,I$
If HOLD(4)=0 Then Amal 10,J$ : Amal 11,K$ : Amal 12,L$
If HOLD(5)=0 Then Amal 13,M$ : Amal 14,N$ : Amal 15,O$
HOLD=0 : LIGHT=0 : Proc LIGHTFIVEHOLD
Amal On
End Proc
Procedure NUDGE
For N=1 To 3
Sam Play 3 : Wait 15 : Clear Key
Next N
Shared REELS(),W(),NUDGES,NCOUNT,A,B,C,D,E,F,LIGHT,NH,NS,GBLC,GBL,IK$,Q
LIGHT=1 : Proc LIGHTFIVENUDGE
LIGHT=0 : Proc LIGHTFIVEHOLD
LIGHT=1 : Proc LIGHTGAMBLE : Proc LIGHTTAKE
NUDGES=NCOUNT-9 : VRL=NUDGES : Proc NUDGETEXT : GBLC=0 : NFC=150
MTEST:
If GBLC>0 Then LIGHT=1 : Proc LIGHTGAMBLE : Proc LIGHTTAKE
If GBLC=3 Then LIGHT=0 : Proc LIGHTGAMBLE : Proc LIGHTTAKE : Goto NTEST
Repeat
MC=Mouse Click
M=Mouse Zone
IK$=Inkey$
If IK$="r" Then Proc REELCHEAT
Dec NFC
If NFC=0 Then If LIGHT=1 Then LIGHT=0 : Proc LIGHTFIVENUDGE : NFC=150
If NFC=0 Then If LIGHT=0 Then LIGHT=1 : Proc LIGHTFIVENUDGE : NFC=150
Until MC>0 and M<>0
If M=0 or M=1 or M>3 Then Goto MTEST
If M=3 and GBLC<3 Then LIGHT=0 : Proc LIGHTGAMBLE : Proc LIGHTTAKE : Sam Play %1111,3,40000
If M=2 and GBLC<3 Then Proc GAMBLE : If GBL=0 Then Goto NUDOUT Else Goto MTEST
NTEST:
If NUDGES=0 Then Goto NUDOUT
LIGHT=1 : Proc LIGHTFIVENUDGE
Repeat
MC=Mouse Click
M=Mouse Zone
IK$=Inkey$ : If IK$="r" Then If NUDGES=VRL Then Proc REELCHEAT
Until MC>0 and M<>0
If M<9 Then Goto NTEST
If M>13 Then Goto NUDGEUP
NUDGEDOWN:
Sam Play %1111,3,40000
M=M-8 : BN=(3*M)-2
Dec W(M) : If W(M)=0 Then W(M)=20
A=W(M)-1 : B=W(M) : C=W(M)+1
Bob BN,,,REELS(M,A)
Bob BN+1,,,REELS(M,B)
Bob BN+2,,,REELS(M,C)
Dec NUDGES : Proc NUDGETEXT
Proc WINCHECK : Proc MONEYTEXT
If NS=1 Then NUDGES=0
Goto NTEST
NUDGEUP:
Sam Play %1111,3,40000
M=M-13 : BN=(3*M)-2
Inc W(M) : If W(M)=21 Then W(M)=1
A=W(M)-1 : B=W(M) : C=W(M)+1
Bob BN,,,REELS(M,A)
Bob BN+1,,,REELS(M,B)
Bob BN+2,,,REELS(M,C)
Dec NUDGES : Proc NUDGETEXT
Proc WINCHECK : Proc MONEYTEXT
If NS=1 Then NUDGES=0
Goto NTEST
NUDOUT:
NH=0 : LIGHT=0 : NUDGES=0 : Proc NUDGETEXT : Proc LIGHTFIVENUDGE
End Proc
Procedure BUTTONLIGHT
Shared A,B,C,D,E,F
Screen Copy 0,A,B,C,D To Physic(1),E,F
Screen Copy 0,A,B,C,D To Logic(1),E,F
End Proc
Procedure MONEYTEXT
Autoback 2
Shared POUNDS,NPENCE,W,PAYOUT,NH,NS
PO=PAYOUT/10
For N=1 To PO
If W>0 Then NPENCE=NPENCE+10 : NS=1 Else NS=0
If NPENCE>90 Then PP=NPENCE/100 : NPENCE=NPENCE-(PP*100) : POUNDS=POUNDS+PP
If NPENCE<0 Then POUNDS=POUNDS-1 : NPENCE=90
POUND$=Str$(POUNDS) : TLP=Text Length(POUND$)
Text 315-TLP,99,POUND$
NPENCE$=" "+Str$(NPENCE) : TLN=Text Length(NPENCE$)
Text 315-TLN,147,NPENCE$
If W>0 Then Sam Play 1
Next
If W>0 Then NH=0
PAYOUT=0 : W=0 : Autoback 1
End Proc
Procedure WINCHECK
Shared W,W(),PAYOUT,WIN()
If RVALUE(1,W(1))<>RVALUE(2,W(2)) Then W=0 : Goto WINOUT
For N=3 To 5
If RVALUE(1,W(1))<>RVALUE(N,W(N)) Then W=N-1 : Exit
Next
If N=6 Then W=5
PAYOUT=WIN(RVALUE(1,W(1)),W)
WINOUT:
If W=0 Then Proc CHECKBARS
End Proc
Procedure CHECKBARS
Shared W(),PAYOUT,WIN(),W
BR=0
S=0 : For N=W(1)-1 To W(1)+1
If REELS(1,N)=16 Then Inc BR : S=1
Next N
If S=0 Then Goto BL
S=0 : For N=W(2)-1 To W(2)+1
If REELS(2,N)=16 Then Inc BR : S=1
Next N
If S=0 Then Goto BL
S=0 : For N=W(3)-1 To W(3)+1
If REELS(3,N)=16 Then Inc BR : S=1
Next N
If S=0 Then Goto BL
S=0 : For N=W(4)-1 To W(4)+1
If REELS(4,N)=16 Then Inc BR : S=1
Next N
If S=0 Then Goto BL
S=0 : For N=W(5)-1 To W(5)+1
If REELS(5,N)=16 Then Inc BR : S=1
Next N
BL: If BR>2 Then PAYOUT=WIN(6,BR) : W=1 Else W=0
End Proc
Procedure NUDGECHECK
Shared A,B,C,D,E,F,NH,W(),PX1,PX2,W,NS,NCOUNT,NVALUE(),LIGHT
If NS=1 Then NH=0 : Goto NUOUT
SR=20000 : NT=0 : For N=1 To 5
Add NT,NVALUE(N,W(N))
Next N
Add NCOUNT,NT
If NT=0 Then Goto HHH
For N=1 To NT
If PX2<310
A=PX2 : B=10 : C=A+15 : D=33 : E=PX1 : F=10 : Proc BUTTONLIGHT
Add SR,1000 : Sam Play %1111,3,SR
Wait 10 : Add PX1,16 : Add PX2,16
End If
Next N
HHH:
R=Rnd(3) : If R=3 Then NH=1 Else NH=0
NUOUT:
If NCOUNT>9 Then Proc NUDGE : NH=0
If NH=0
PX1=8 : PX2=166 : NCOUNT=0
LIGHT=0 : Proc LIGHTMECHHOLD
A=0 : B=2 : C=156 : D=43 : E=0 : F=2 : Proc BUTTONLIGHT
End If
If NH=1
LIGHT=1 : Proc LIGHTMECHHOLD
End If
End Proc
Procedure NUDGETEXT
Shared NUDGES
NUDGE$=" "+Str$(NUDGES) : TLN=Text Length(NUDGE$)
Text 254-TLN,33,NUDGE$
End Proc
Procedure LIGHTSTART
Shared LIGHT
If LIGHT=0 Then A=67 : B=93
If LIGHT=1 Then A=99 : B=125
Screen Copy 0,105,A,146,B To Physic(1),265,227
Screen Copy 0,105,A,146,B To Logic(1),265,227
End Proc
Procedure LIGHTTAKE
Shared LIGHT
If LIGHT=0 Then A=67 : B=93
If LIGHT=1 Then A=99 : B=125
Screen Copy 0,7,A,48,B To Physic(1),265,163
Screen Copy 0,7,A,48,B To Logic(1),265,163
End Proc
Procedure LIGHTGAMBLE
Shared LIGHT
If LIGHT=0 Then A=67 : B=93
If LIGHT=1 Then A=99 : B=125
Screen Copy 0,56,A,97,B To Physic(1),265,195
Screen Copy 0,56,A,97,B To Logic(1),265,195
End Proc
Procedure LIGHTFIVEHOLD
Shared LIGHT,HOLD(),FIRST
If LIGHT=0 Then A=163 : B=189
If LIGHT=1 Then A=227 : B=253
Screen Copy 0,7,A,244,B To Physic(1),7,227
Screen Copy 0,7,A,244,B To Logic(1),7,227
For N=1 To 5 : HOLD(N)=0 : Next N
End Proc
Procedure LIGHTHOLDOFF
Shared M,HOLD()
M=M-4
For N=0 To 4
If M=N Then A=(N*49)+7
Next N
Screen Copy 0,7,163,48,189 To Physic(1),A,227
Screen Copy 0,7,163,48,189 To Logic(1),A,227
Sam Play %1111,3,40000 : HOLD(M+1)=1
End Proc
Procedure LIGHTFIVENUDGE
Shared LIGHT
If LIGHT=0 Then A=131 : B=157
If LIGHT=1 Then A=195 : B=221
Screen Copy 0,7,A,244,B To Physic(1),7,195
Screen Copy 0,7,A,244,B To Logic(1),7,195
Screen Copy 0,7,A,244,B To Physic(1),7,50
Screen Copy 0,7,A,244,B To Logic(1),7,50
End Proc
Procedure LIGHTMECHHOLD
Shared LIGHT
If LIGHT=0 Then A=73 : B=99
If LIGHT=1 Then A=101 : B=127
Screen Copy 0,152,A,179,B To Physic(1),167,9
Screen Copy 0,152,A,179,B To Logic(1),167,9
End Proc
Procedure GAMBLE
Shared A,B,C,D,E,F,LIGHT,GBL,NUDGES,GBLC
LIGHT=0 : Proc LIGHTTAKE : Proc LIGHTGAMBLE
For N=1 To 50
Sam Play 3
A=182 : B=101 : C=205 : D=113 : E=264 : F=26 : Proc BUTTONLIGHT
A=207 : B=115 : C=230 : D=127 : E=264 : F=11 : Proc BUTTONLIGHT
Wait 2 : M=Mouse Click : If M<>0 Then GBL=1 : Exit
A=182 : B=115 : C=205 : D=127 : E=264 : F=11 : Proc BUTTONLIGHT
A=207 : B=101 : C=230 : D=113 : E=289 : F=11 : Proc BUTTONLIGHT
Wait 2 : M=Mouse Click : If M<>0 Then GBL=0 : Exit
A=182 : B=101 : C=205 : D=113 : E=289 : F=11 : Proc BUTTONLIGHT
A=207 : B=115 : C=230 : D=127 : E=289 : F=26 : Proc BUTTONLIGHT
Wait 2 : M=Mouse Click : If M<>0 Then GBL=1 : Exit
A=182 : B=115 : C=205 : D=127 : E=289 : F=26 : Proc BUTTONLIGHT
A=207 : B=101 : C=230 : D=113 : E=289 : F=42 : Proc BUTTONLIGHT
Wait 2 : M=Mouse Click : If M<>0 Then GBL=0 : Exit
A=182 : B=101 : C=205 : D=113 : E=289 : F=42 : Proc BUTTONLIGHT
A=207 : B=115 : C=230 : D=127 : E=264 : F=42 : Proc BUTTONLIGHT
Wait 2 : M=Mouse Click : If M<>0 Then GBL=1 : Exit
A=182 : B=115 : C=205 : D=127 : E=264 : F=42 : Proc BUTTONLIGHT
A=207 : B=101 : C=230 : D=113 : E=264 : F=26 : Proc BUTTONLIGHT
Wait 2 : M=Mouse Click : If M<>0 Then GBL=0 : Exit
Next N
If GBL=1 Then Add NUDGES,NUDGES Else NUDGES=0
Proc NUDGETEXT
Inc GBLC
End Proc
Procedure LOSER
Shared A,B,C,D,E,F
Sam Play %1111,4,10000
Cls 1,0,0 To 157,44 : Ink 15,1
Text 2,11," LOSER !!!"
Text 2,24," Click Mouse"
Text 2,37," To Replay..."
Clear Key : Ink 15,0
Repeat
Until Mouse Click<>0
A=0 : B=0 : C=157 : D=44 : E=0 : F=0 : Proc BUTTONLIGHT
End Proc
Procedure GAMELOADSAVE
Shared IK$,POUNDS,NPENCE
If IK$="q" Then System
If IK$="l"
Open In 1,"df0:FRUITSAVED-GAME.seq"
Input #1,SG$
Close 1
N=Instr(SG$,"*")
POUNDS=Val(Left$(SG$,N))
NPENCE=Val(Right$(SG$,N))
Proc MONEYTEXT
Open Out 1,"df0:FRUITSAVED-GAME.seq"
SG$="2*0" : Print #1,SG$
Close 1
End If
If IK$="s"
SG$=Str$(POUNDS*1)+"*"+Str$(NPENCE)
Open Out 1,"df0:FRUITSAVED-GAME.seq"
Print #1,SG$
Close 1
POUNDS=2 : NPENCE=0 : Proc MONEYTEXT
End If
Clear Key
End Proc
Procedure REELCHEAT
Shared W()
Auto View On : Load Iff "df0:newreelcheat",0
Screen To Front 0
For N=0 To 4
T=65*N : U=10*W(N+1) : Add U,26
Ink 1 : Box T-4,U To T+61,U+10
Next N
Wait Key
Screen To Front 1 : Auto View Off
Load Iff "df0:newfruitbuttons",0
Screen 1 : Ink 15
End Proc
Procedure SUPERNUDGE
Shared REELS(),W(),NUDGES,LIGHT,Q,RVALUE()
LIGHT=0 : Proc LIGHTFIVEHOLD : Inc LIGHT : Proc LIGHTFIVENUDGE
NUDGES=40 : SNC=100 : Proc NUDGETEXT
SNTEST:
While Mouse Click=0 or M<9
Dec SNC
If SNC=0 Then Add SNC,100 : Sam Play 3 : Dec NUDGES : Proc NUDGETEXT
If NUDGES=0 Then Goto SNUDOUT
If NUDGES=0 Then Goto SNUDOUT
M=Mouse Zone
Wend
If M=0 Then Goto SNTEST
If M>13 Then Goto SNUDGEUP
SNUDGEDOWN:
M=M-8 : BN=(3*M)-2
Dec W(M) : If W(M)=0 Then W(M)=20
A=W(M)-1 : B=W(M) : C=W(M)+1
Bob BN,,,REELS(M,A)
Bob BN+1,,,REELS(M,B)
Bob BN+2,,,REELS(M,C)
Goto SNTEST
SNUDGEUP:
M=M-13 : BN=(3*M)-2
Inc W(M) : If W(M)=21 Then W(M)=1
A=W(M)-1 : B=W(M) : C=W(M)+1
Bob BN,,,REELS(M,A)
Bob BN+1,,,REELS(M,B)
Bob BN+2,,,REELS(M,C)
Goto SNTEST
SNUDOUT:
Dec LIGHT : Proc LIGHTFIVENUDGE
If RVALUE(1,W(1))=RVALUE(2,W(2)) and RVALUE(1,W(1))=7
Proc WINCHECK : Proc MONEYTEXT
End If
End Proc